package com.turing.post.cardmanagement.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 卡调拨主要业务逻辑实现
 * 
 * @author YangShuo
 * 
 */

@Remote
@Local
public interface TransferInOutStockOrderBusiness {
	/**
	 * 新增调拨单
	 * 
	 * @param TransferInOutStockOrder
	 *            对象
	 * @param TransferInOutStockOrderDetail对象集合
	 */
	public BigInteger newTransferInOutStockOrderWithDetail(
			PCPSWebInput webInput,
			TransferInOutStockOrder TransferInOutStockOrder,
			List<TransferInOutStockOrderDetail> detaillist)
			throws PCPSApplicationException;

	/**
	 * 出库方审批新增调拨单,单号，审批人，是否同意true代表同意false代表打回
	 * 
	 * @param webInput
	 * 
	 * @param TransferInOutStockOrderId
	 *            调拨单ID
	 * @param UserId
	 *            审批人
	 * @param ispass
	 *            是否同意
	 */
	public void AuthTransferInOutStockOrderByFromBranch(PCPSWebInput webInput,
			BigInteger TransferInOutStockOrderId, BigInteger UserId,
			boolean ispass) throws PCPSApplicationException;

	/**
	 * 接收调拨单
	 * 
	 * @param webInput
	 * 
	 * @param TransferInOutStockOrderID
	 *            调拨单ID
	 * @param operno
	 *            操作员
	 * @param remark
	 *            备注
	 */
	public void revelveTransferInOutStockOrderApproval(PCPSWebInput webInput,
			BigInteger TransferInOutStockOrderID, BigInteger operno,
			String remark, boolean ispass) throws PCPSApplicationException;

	/**
	 * 拒绝调拨单
	 * 
	 * @param webInput
	 * 
	 * @param TransferInOutStockOrderID
	 *            调拨单ID
	 * @param operno
	 *            操作员
	 * @param remark
	 *            备注
	 */
	public void regectionTransferInOutStockOrder(PCPSWebInput webInput,
			BigInteger TransferInOutStockOrderID, BigInteger operno,
			String remark) throws PCPSApplicationException;

	/**
	 * 接收方接收调拨单,单号，接收人，是否同意true代表同意接收false代表拒收
	 * 
	 * @param webInput
	 * 
	 * @param TransferInOutStockOrderId
	 *            调拨单ID
	 * @param UserId
	 *            审批人
	 * @param ispass
	 *            是否同意
	 */
	public void AuthTransferInOutStockOrderByToBranch(PCPSWebInput webInput,
			BigInteger TransferInOutStockOrderId, BigInteger UserId,
			String ConfirmCancelRemark, boolean ispass)
			throws PCPSApplicationException;

	/**
	 * @出库方取消调拨单,单号，操作员
	 * @param TransferInOutStockOrderId
	 *            调拨单ID param UserId 审批人
	 * 
	 */

	public void AuthTransferInOutStockOrderByFromBranch(PCPSWebInput webInput,
			BigInteger TransferInOutStockOrderId, BigInteger UserId)
			throws PCPSApplicationException;

}
